package com.service;

import com.pojo.Content;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ContentService {
    void insertContent(Content content);

    //    删除备忘录内容
    void deleteContent(@Param("id") Integer id, @Param("userId") Integer userId);

    //    修改待办（修改内容）
    void updateContent(@Param("content") String content, @Param("id") Integer id);

    /*点击哪天就显示哪天信息*/
    List<Content> todaylist(@Param("startDate") String startDate, @Param("userId") Integer userId);

    //    修改待办（修改地点）
    void updateAddress(@Param("address") String address, @Param("id") Integer id);

    //    修改待办（修改类型）
    void updateType(@Param("type") String type, @Param("id") Integer id);

    //    修改待办（修改开始日期）
    void updateStartDate(@Param("startDate") String startDate, @Param("id") Integer id);

    //    修改待办（修改结束日期）
    void updateEndDate(@Param("endDate") String endDate, @Param("id") Integer id);

    //    修改待办（日期）
    void updateDate(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("id") Integer id);

    //    修改待办（修改参与者）
    void updatePartner(@Param("partner") String partner, @Param("id") Integer id);

    //    修改所有
    void updateTodo(@Param("content") Content content);

    //    更新待办状态
    void workDone(@Param("id") Integer id, @Param("status") Integer status);

    //    查询用户的所有待办事项
    List<Content> todoList(@Param("userId") Integer userId);

//    查询当天待办
    List<Content> findTodoByDay(@Param("userId") Integer userId);
/* 按id查询*/
    Content findById(@Param("id") Integer id);

    List<Content> findById2(@Param("id") Integer id);
    //    按照日期查询：查询近七天待办
    List<Content> findTodoNearSeven(@Param("userId") Integer userId);

    //    按照日期查询：查询当月待办
    List<Content> findTodoByMonth(@Param("userId") Integer userId);

    //    获取当前月的todo总量
    double todoCountByMonth(@Param("userId") Integer userId);

    //    获取当前月的todo完成数量
    double doneCountByMonth(@Param("userId") Integer userId);

    //    获取当天的todo总量
    double todoCountByDay(@Param("userId") Integer userId);

    //    获取当天的todo完成量
    double todoDoneByDay(@Param("userId") Integer userId);

    //    获取本周的todo总量
    double todoCountByWeek(@Param("userId") Integer userId);

    //    获取本周的todo完成量
    double todoDoneByWeek(@Param("userId") Integer userId);

    Map<String,Double> mapPercent(@Param("userId") Integer userId);

    //    查询某个月的数据
    List<Content> findTodoByWantMonth(@Param("wantMonth") String wantMonth, @Param("userId") Integer userId);

    //    随便按照什么查询
    List<Content> findByAnyWhat(@Param("content") Content content);


    Integer countByStudy(@Param("userId") Integer userId);

    Integer countByLife(@Param("userId") Integer userId);

    Integer countByWork(@Param("userId") Integer userId);

    Integer countByEntertainment(@Param("userId") Integer userId);

    //    查想要的
    List<Content> findAny(@Param("keyWords") String keyWords,@Param("userId") Integer userId);

    // 查询想要的月的待办总量
    Double countByWhatMonth(@Param("content") Content content);
    // 查询想要的月的完成总量
    Double doneByWhatMonth(@Param("content") Content content);
    // 查询完成率
    Map<String,Object> mapMonthPercent(@Param("content") Content content);

}
